密码学(Cryptography)简史-非对称加秘(Asymmetric Encryption)

之前讲过对称加密,比如DES, AES, 还有AES对应到的各种模式,比如ECB, CBC, CTR, GCM.

对称加密唯一保密的就是密钥(Key), 有了这个密码你就能解密其中的内容。

公开通信信道(Channel)

数字世界中的通信信道其实可以类比真实物理世界, 我们要从上海到北京就要经常各种各样的道路,比如走高速公路,就可能要经常各种检查站,收费站,理论上这些站点都可以对你的车进行全方位的搜索检查,看有没有携带违禁品。互联网世界一样,你的数据要经常中间的各种Wifi, 路由,网关,光纤,每个路由网关理论上都可以把你的传输数据拦截下来,甚至篡改,所以我们要知道公开的这些通信信道是不安全不可信任的。

所以想想我们的数据在这些不可信任的路途中穿梭还是挺可怕的。

动机(Motivation)

现在我们已经可以通过AES加密数据了,把加密的内容传输出去。但是密码要怎么传输出去了,因为密码是明文的,它在这些公开通信信息里面传输就一定会可能被黑客拦截到,还有一个问题,如果你一直用同一个密码,那么黑客就可以一直拦截你的信息,甚至在得到密码之前就一直在拦截,直到某一天得到密码了,那么黑客就可以同时解密之前已经存在很的加密信息了,如果密码不改,那将来的加密信息也一样会被黑客解密。

所以密码学科学家们绞尽脑汁想设计出来一种方法,可以解决在不安全信道中交互密钥的问题

于是就设计出了一种通过密钥对的加解密方式,同时生成一对密钥

  • 私钥(Private Key) — 自己保留,绝对保密
  • 公钥(Public Key) — 公开发布,分享给其它人

公钥加密,私钥解密。这样别人就可以拿到你的公钥把需要保密的信息进行加密发给你,你收到后通过私钥进行解密。

这个想法很奇妙,然后真的就做出来了。

RSA(Rivest, Shamir, Adleman)

RSA就是其中一种非对称加密算法,它就是可以生成一对公钥,私钥。可能大家以为这个是最近才发明的,但其实这个是很早就了1977年,RSA就发明了,一直用到现在。

它基于的数学原理其实很简单,简单到一个小学生都容易理解

  • 大整数的因式分解

假设我们有两个质数p, q, N=p*q, 那当我们只知道N的时候是没办法算出p和q的,这个基本原理就是RSA的本质。

其实想想很简单,但总会觉得有点不可思议对吧,但现实就是这样,如果有谁能过够在只知道N的情况下算出p和q,那么RSA就完蛋了。

RSA的计算过程很简单

选择两个质数 

密码学(Cryptography)简史-对称加密(Symmetric Encryption)

之前一篇文章讲过古典密码学。

这篇文章我们来聊一下对称加密(Symmetric Encryption)。

这个名字其实有点唬人,简单说就是只需要一把钥匙可以用来把文件加密,然后解密也是同一把钥匙。

比如说我们要对PDF进行加密,那就会有需要同一个密码进行打开,如果没有这个密码,你就看不了里面的内容。

文件加密之后我们就可以把文件存在一些公开的网盘里面,或者分享给其他人,然后别人通过密码就可以看了,如果没有密码,就算别人得到文件也无法知晓里面的内容。

Blocker Cipher(分组加密)

一个文件可能很大,所以密码学上一般会把内容进行固定长度的切割,然后一块内容一块内容进行加密,这个就是分组加密,与之对应的就是流加密(Steam Cipher)。

DES(Data Encryption Standard)

DES(Data Encryption Standard), 它1977年成为标准。这个名字看起来很高级,其实现在已经不用了,甚至说禁止使用,因为随着计算机算力的不断发展,它56位的密码长度很容易就被爆破出来(Brute Force),1999年就被爆破了,但在一段时间之内,它就是标准的密码加密算法。

  • https://en.wikipedia.org/wiki/Data_Encryption_Standard

它的流程如下图,基于Feistel Network结构,16轮运算,Block Size 64位,分为左右各32位,然后进行16轮运算,每轮运算就都使用不同的密码(KDF,随称密钥派生, Key Derivation Function),最后输出同等长度的64位密文。

后面还有3DES, 就是进过三轮DES加密,因为密码长度始终只有56位,所以也被淘汰了。

这样就不得不寻求新的加密方式

AES(Advanced Encryption Standard)

随着DES的安全性越来越弱,美国NIST在1997年发起了新的加密算法的竞算,经过多轮挑战,最终Rijndael算法被选自AES标准。

  • https://en.wikipedia.org/wiki/Advanced_Encryption_Standard_process

所以在2001年,Rijndael被当做标准,成为AES算法,这里有当年AES成为标准的提案。

最终选取

  1. Block size: 128位

密码学(Cryptography)简史-古典密码学

最近一直在看密码学相关的知识,虽然一年前已经看过了,但一段时间没用了,就容易忘记。

所以想在这里写一篇密码学简史,顺便梳理一下相关知识。

密码学对普通人来讲,看起来是很高深的,但实际情况是每天大家都要用到大量密码学的算法。只要你在用手机电脑上网,购物,聊天,那就一定会有很多密码学相关的算法在后面默默地工作着,这些幕后英雄在偷偷地保障着你在数字时代,你的隐私不被窃取,你的聊天记录不会被人看到,你的银行密码不会被人抓到。

每次你在App里面发起一次购物请求,在聊天App里面发出“你好”,后台有大量的加密算法在默默地运行。

而在这里我想慢慢地给大家解释清楚这后面所发生的一切。

密码学简单来说就是把你说的话,发的消息进行各种转换,就算别人看到转换之后的内容,也无法看到你真实说了什么。

所以这里你会第一次接触到两个概念

  1. 明文(PlainText):就是你真实说的话,发的消息
  2. 密文(CipherText):就是经常各种转换内容,别人第一次看到时会一脸懵,不知道具体是什么

大道至简,简单粗暴。

人类的文明史,其实也是密码学的演进史,人类从古至今,其实都是一直在追求如何将明文进行各种转换,变成密文,而不被变人知晓真实内容。

当然魔高一尺,道高一丈,你越是进行各种转换,别人就越想知道,经过几百年,上千年的迭代演进,攻防转换,渐渐地形成了密码学(Cryptography)的概念。

密码学分类

一般可以分为古典密码学(Classic Cryptography)和现代密码学(Modern Cryptography), 分类标准其实也很简单,大概以时间为界,比如1970年以前叫古典密码学,1970年之后就是现代密码学。

古典密码学(Classic Cryptography)

假设你在古代,你不想让别人看到你写的消息,你该怎么做?

最先想到的可能就是对发的消息进行替换?

比如:今天晚上发起攻击

我们可以进行简单替换:“后天早上回家吃饭”

  • 今天-后天
  • 晚上-早上
  • 发起-回家
  • 攻击-吃饭

当然这里只是为了描述这个概念,感兴趣你完全可以自己弄一个对照列表,只有知道这个对照表的人才能解读出真实内容。

或者我们对它的顺序进行各种打乱: 晚发上攻今起天击,而这个顺序对应表只有你知道。

上面这个例子其实就是一种朴素的古典密码学的加密方法:替换密码(Substitution Cipher)。

好了,现在你对古典密码学有了一些基本的概念,它是根据一些经验,手工设计出来的,甚至每个人都能根据一些想法设计出自己的密码。

那历史上又出现过哪些比较有名的加密方法呢,这里我直接截图的维斯百科上对古典密码学的总结归类。

其实真的是百花奇放,各种分门别类,这里我总感觉应该只是收集了一些传播范围比较广的一些加密方法。

凯撒密码 (Caesar Cipher)

alist挂载阿里云盘

教程参考

  • https://alistgo.com/zh/guide/drivers/aliyundrive_open.html

进入Alist管理后台,添加Aliyun open driver

  • http://192.168.1.5:3010/

1.更新Oauth Token链接

    • https://api.alistgo.com/alist/ali_open/token

    2. 找到你想挂载的根文件夹ID, 比如, 当然我们可以直接填入”root”代表根目录

    • https://www.alipan.com/drive/file/all/65e4927066e0cd78d3534717xxxxxxx

    3. 获取refresh token, 打开这个链接,登录之后得到refresh token

    4.最终我们会得到webdav链接

    • http://192.168.1.5:3010/dav

    小韭菜成长记-开通港卡

    在国内A股做了很多年的小韭菜,趁着最近A股上涨,清仓走人。

    趁着8月底去深圳,顺便去了一次香港,线上申请开通了

    • 中银香港
    • 汇丰One
    • 众安银行
    • 天星银行

    中银,众安,天星开通都挺快的。

    汇丰线上开通没有直接通过,等了几天才收到”Say Hello”邮件。再往后就是漫长的等待密码函,大概10.8从深圳回上海,在楼下信箱里面,终于收到了密码函,马上打客服电话+85222333000申请激活银行卡,然后在客服的帮助下尝试激活登录HSBC Mobile App, 折腾了46分钟无果。看来客服也对这些流程不是特别清楚,后来查到这个需要等到银行卡激活之后才能激活登录。

    终于在10.13晚上,我无意中尝试激活登录,居然成功了,但我之前并没有收到任何银行卡激活的短信,于是顺便申请了汇丰万事达扣账卡(俗称汇丰蓝狮子, MasterCard, 无法透支的信用卡),不知道哪天能够收到这个银行卡。

    至此我集齐了5张银行卡

    • 中银香港银行卡
    • 中银香港万事达扣账卡
    • HSBC One(汇丰红狮子)
    • HSBC万事达扣账卡(蓝狮子)
    • 众安Visa实体卡

    简单记录下每张卡的作用

    中银香港银行卡

    中银香港银行卡是一张银联卡,香港本地取现免手续费,我发现它最大的好处是支持eDDA入金盈透

    目前我跨境支付通都是汇到这张卡上,FPS绑定手机号,所以跨境支付通,只需要输入我的境内手机号就可以直接汇款。

    中银香港万事达扣账卡

    中银香港万事达扣账卡是一张特殊MasterCard信用卡,和汇丰蓝狮子类似,不能透支的信用卡,除中国大陆和香港外的万事达ATM取现免手续费,消费返0.5%

    HSBC One(汇丰红狮子)

    这张卡需要配合兴业银行寰宇人生银行卡使用,国内可以通过寰宇人生银行卡免手续费无损汇到HSBC One,除此之外暂时没发现什么特别的地方.

    HSBC万事达扣账卡(蓝狮子)

    HSBC万事达扣账卡(蓝狮子),和中银香港万事达扣账卡类似,但只有在汇丰ATM取现免手续费,消费返0.4%

    众安Visa实体卡

    众安的手机APP做的挺不错的,这张实体卡暂时应该没有太多作用。

    天星银行虚拟卡

    最大的好处是汇率兑换最划算,所以要RMB兑换港币,美元,可以通过天星银行

    兴业银行寰宇人生银行卡

    这是新开的境内兴业银行卡,在跨境支付通开通前,这是一张神卡,可以跨境汇款到汇丰银行,无损,无手续费,但现在有了跨境支付通,这张卡的作用就小了,但这张卡还有个好处是境外取现免手续费,而且汇率很不错…

    港卡美元转入嘉信理财需1%手续费

    最近想去申请一张嘉信实体银行卡,需要转入25K$作为前提,于是在天星银行进行了换汇(对比过中银香港,天星银行,众安银行,国内工商银行),天星银行的汇率还是比较不错的,于是换了7000$ USD转入嘉信理财。

    香港银行帐号从官网上找到

    Hong Kong Dollar (HKD) Destination Bank: Citibank N.A., Hong Kong
    SWIFT ID: CITIHKHX
    Account Name: Charles Schwab & Co., Inc.
    Bank Code: 006
    Branch Code & Account
    Number:
    391-62286838
    Bank Address: 3 Garden Road, Central, Hong 

    AI时代的家长会

    昨天参加了小朋友小学一年级下的家长会,家长会共两个小时。

    出于无聊,打开了手机录音,然后才有了下面这些偿试

    1. 把音频发给豆包,豆包居然直接把音频转好了文字,还给了总结
    2. 把文字Copy到Google NotebookLM
    3. 直接生成了播客对话
    4. 生成思维导图
    5. 直接和家长会内容进行对话

    整个过程很丝滑, NotebookLM果然是最强AI应用之一,生成的思维导图很准确,播客音频对话抓住整个家长会的重点,瞬间就有了一个家长会的助手,可以访谈任何内容。

    水天一线

    退一步海阔天空,让三分烟消云散.

    世人皆晓长空好,何不摒弃杂念,尽情展翅,放手一搏,天地之间无所顾虑.

    一失足成千古恨,再回头已百年身.

    走好自己的每一步.

    一切景语皆情语,用心感受你所能触听到一切.

    一切皆缘,由线系之.

    勿忘慈母手中线,游子身上衣,此其中一也.

    水给人以生命.

    天寄物以梦想.

    一乃万物天端.

    线永连着你我.

    故有我水天一线.…